package com.atguigu.ssyx.api;/*
 版权所有(C) 2022 深圳市微耕实业有限公司. 保留所有权利.
 2022-05-10 09:03:36  远程开门 上传全部权限 与1001服务器20220509对接
                      JSON 采用 jackson
                      HTTP 采用 java.net.http.HttpClient
                      Websocket 采用 https://github.com/TakahikoKawasaki/nv-websocket-client
 2022-05-12 11:16:35  Websocket 改为 java.net.http.WebSocket
                      增加 上传全部有用时段[数据类似短报文协议]
 2022-05-25 22:51:17  为了支持JDK1.8版本 而引入
                      HTTP 采用 org.apache.hc.client5
                      websocket 采用 org.java_websocket
*/
import com.atguigu.ssyx.model.WgRequest;
import com.atguigu.ssyx.model.WgResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;

@Component
public class WgWebapi {

    @Autowired
    private RestTemplate restTemplate;

    //wg提供的外网服务器及控制器  可切换为本地的
//    public static String testUrl = "http://169.254.195.89:61080/";
    public static String testUrl = "http://127.0.0.1:61080/";
    public static int testControllerSN = 253260324;

/*    public WgWebapi(RestTemplate restTemplate) {
        this.restTemplate = restTemplate;
    }*/

    /**
     * 向指定URL发送JSON格式的POST请求。
     *
     * @param url       1001服务器域名IP及端口
     * @param cmdBody   请求体内容，JSON字符串格式
     * @param timeoutMs 接收超时时间，默认是3000毫秒
     * @return 响应结果字符串
     */
    public WgResponse PushToWebWithjson(String url, String cmdBody, int timeoutMs) {
        int timeout = 3000;
        if (timeoutMs > timeout) {
            timeout = timeoutMs;
        }
        //设置请求头
        HttpHeaders headers = new HttpHeaders();
        headers.add("Accept", "application/json");
        headers.add("Content-Type", "application/json");
        //创建请求实体
        HttpEntity entity = new HttpEntity(cmdBody, headers);
        WgResponse response = restTemplate.postForObject(url, entity, WgResponse.class);
        return response;
    }

    // 将json格式的数据推送到指定的url，并设置超时时间为3000毫秒
    public WgResponse PushToWebWithjson(String url, String body) {
        return PushToWebWithjson(url, body, 3000);
    }

    /**
     * 解析响应的JSON字符串，检查其中的 "result.success" 字段是否为 true。
     *
     * @param response JSON格式的响应字符串
     * @return 如果 "result.success" 为 true，则返回 true；否则返回 false
     */
    public boolean successIsTrue(WgResponse response) {
        boolean isSuccess = false;
        if (response.getApiResult() != null) {
            String success = response.getApiResult().getSuccess();
            if (success != null && success.equals("true")) {
                isSuccess = true;
            }
        }
        return isSuccess;
    }
}
